#!/bin/sh
#
# pcscd        Starts the pcscd Daemon
#
# chkconfig:   2345 25 88
# description: The PC/SC smart card daemon is a resource manager for the \
#              PC/SC lite and Musclecard frameworks.  It coordinates \
#              communications with smart card readers, smart cards, and \
#              cryptographic tokens that are connected to the system.
#
# processname: pcscd
# config:      /etc/reader.conf
#
### BEGIN INIT INFO
# Provides: pcscd
# Required-Start: $local_fs $remote_fs $syslog
# Required-Stop: $local_fs $remote_fs $syslog
# Should-Start: udev hal openct
# Should-Stop: udev hal openct
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Daemon to access a smart card using PC/SC
# Description: The PC/SC smart card daemon is a resource manager for the
#              PC/SC lite and Musclecard frameworks.  It coordinates
#              communications with smart card readers, smart cards, and
#              cryptographic tokens that are connected to the system.
### END INIT INFO
#
# Note!  pcscd should be started after pcmcia, and shut down before it
# for smooth experience with PCMCIA readers.

. /etc/init.d/functions

umask 077

exec=/usr/sbin/pcscd
prog=$(basename $exec)
lockfile=/var/lock/subsys/$prog
PCSCD_OPTIONS=

# Source config
if [ -f /etc/sysconfig/pcscd ] ; then
    . /etc/sysconfig/pcscd
fi

start() {
    echo -n $"Starting PC/SC smart card daemon ($prog): "
    /usr/sbin/update-reader.conf && daemon $prog $PCSCD_OPTIONS
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping PC/SC smart card daemon ($prog): "
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
    stop
    start
}


case "$1" in
    start|stop|restart)
        $1
        ;;
    reload|force-reload)
        restart
        ;;
    status)
        status $prog
        ;;
    condrestart|try-restart)
        [ ! -f $lockfile ] || restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
        exit 2
esac
